home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 February / CHIP Şubat 1998.iso / drivers / SESK / exme3201 / MED3201.ROM < prev    next >
Text File  |  1996-07-02  |  34KB  |  757 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                                              
  3. ;     File:           med3201.rom
  4. ;     Version:        1.2
  5. ;     Board:          Data Expert, MED3201 - Based on AMD LT-1
  6. ;     Chip:           Am78C201 C0 Alpha
  7. ;     Author:         Ali Sobhi
  8. ;     Copyright:      Advanced Micro Devices,Inc., 1996. All Rights Reserved.
  9. ;
  10. ;     Description:    This PnP EEPROM map file is designed to activate the
  11. ;              resources on an AMD Am78C201-C0 Interwave which is used
  12. ;              in LT-1 board
  13. ;
  14. ;                     This map does not activate CD-ROM (i.e. no resources) and
  15. ;              also activates the 6th logical device on IW (i.e.
  16. ;              EXTERNAL TELEPHONY)  with only I/O port resources needed
  17. ;              and not any IRQ, DMA, or DRAM resources.
  18. ;
  19. ;     Note:          Since EEPROM on our designs has only 512 Bytes to store,
  20. ;              make sure we don't have more than that. PNPMAP.EXE does
  21. ;              not check for this maximum size.
  22. ;
  23. ;------------------------------------------------------------------------------
  24.  
  25. ;-----------------------------------------------------------------------------
  26. ;
  27. ;   NOTE: Very important
  28. ;
  29. ;     To write this EEPROM map to an EEPROM, use PNPMAP.EXE, provided by AMD. 
  30. ;     Do not use any version of EEWRITE; the various versions of EEWRITE      
  31. ;     floating around come in various flavors; some do not support comments,  
  32. ;     others do not support quoted strings.  Others support comments only at  
  33. ;     the beginning of a line, not at the end.  Just use PNPMAP.EXE, the      
  34. ;     officially supported version from Advanced Micro Devices.               
  35. ;
  36. ;-----------------------------------------------------------------------------
  37.  
  38. ;-----------------------------------------------------------------------------
  39. ;                                                                             
  40. ;     Change History:                                                         
  41. ;         5/1/96      Ali Sobhi - Initial version based on LT2.ROM            
  42. ;      5/13/96     Ali Sobhi - Changed the PnP Vendor ID
  43. ;      5/26/96     Ali Sobhi - Changed to map to use B2 IC and GPOUT
  44. ;                                                                             
  45. ;---------------------------------------------------------------------------
  46.  
  47. ;---------------------------------------------------------------------------
  48. ; PnP Header
  49. ;
  50. ; The PnP header contains the 72-bit "serial identifier", used by PnP
  51. ; initialization software to isolate the PnP device.
  52. ;---------------------------------------------------------------------------
  53. ; Vendor ID = DXP3201
  54. ; Serial No = 00000001
  55. 0x13            ; Vendor ID Byte 0
  56. 0x10            ; Vendor ID Byte 1
  57. 0x32            ; Vendor assigned product number (byte 0)
  58. 0x01            ; Vendor assigned product number (byte 1)
  59. 0x01            ; Serial Number Byte 0
  60. 0x00            ; Serial Number Byte 1
  61. 0x00            ; Serial Number Byte 2
  62. 0x00            ; Serial Number Byte 3
  63. 0x00            ; Special LFSR checksum (PnP specification appendix B)
  64.                 ; NOTE: The checksum field is autmatically calculated by
  65.                 ;       PNPMAP.EXE so I leave it as 0x00
  66.  
  67. ;---------------------------------------------------------------------------
  68. ; PnP Version
  69. ;
  70. ; The PnP version entry tells the PnP initialization software which
  71. ; version of the PnP specification the hardware is compatible with.
  72. ;---------------------------------------------------------------------------
  73.  
  74. 0x0A            ; PnP Version - Small item, PnP version tag, 2 bytes
  75. 0x10            ; InterWave is compatible with PnP spec 1.0
  76. 0x10            ; InterWave EEPROM version 1.0
  77.  
  78. ;---------------------------------------------------------------------------
  79. ; ANSI Identifier string
  80. ;
  81. ; The Ansi Identifier string is an ASCII text string to display to the
  82. ; user for prompts and messages about the InterWave board.
  83. ;---------------------------------------------------------------------------
  84.  
  85. 0x82            ; ANSI identifier string - Large item, ID string tag
  86. 0x14            ; Length byte 0 (low byte)  - In total, 0x14h = 20 bytes long
  87. 0x00            ; Length byte 1 (high byte)
  88. 'MED3201 - Audio Card'
  89.                 ; Actual ANSI identifier
  90.  
  91. ;---------------------------------------------------------------------------
  92. ; Vendor Defined Information
  93. ;
  94. ; This block contains information regarding the InterWave board.
  95. ;
  96. ; This is the definition of the vendor specific section, as defined by
  97. ; CSE:
  98. ;
  99. ; All data items are ASCIIZ, which means they are ASCII and terminated by
  100. ; a binary zero.
  101. ;
  102. ; All data items are prefixed by a 3 character type, which defines the
  103. ; type of data that follows.
  104. ;
  105. ; Normally, only one of each possible type of data item is allowed.  The
  106. ; identifiers that are currently defined are:
  107. ;
  108. ;       VERn.n   - ASCIIZ Vendor defined block version number
  109. ;       PID      - ASCIIZ InterWave Part Identifier
  110. ;       BID      - ASCIIZ Board Identifier
  111. ;
  112. ; Since the data is ASCII, it must be followed by a zero byte terminator.
  113. ;
  114. ; What this data is used for:
  115. ;
  116. ; Future versions of the CSE SETUP utilities will read the Plug & Play
  117. ; EEPROM to determine what board is currently installed and will install
  118. ; the appropriate drivers and configuration files as required to operate
  119. ; the InterWave board.  This data is used in addition to the vendor ID,
  120. ; so if you turn a revision of the board, PLEASE notify CSE as necessary,
  121. ; so we can maintain this data.
  122. ;---------------------------------------------------------------------------
  123. ;
  124. 0x84            ; Vendor defined data - Large item, ID string tag
  125. 0x1F            ; Length byte 0 (low byte) - In total, 31 bytes long
  126. 0x00            ; Length byte 1 (high byte)
  127.  
  128.                 ; Strings are NULL terminated.
  129. 'VER1.2'        ; (7=6+1)   Vendor defined data version 1.2
  130. 0x00
  131.  
  132. 'PIDAm78C201 B2'; (15=14+1) Part Identifier and revision (space seperated)
  133. 0x00
  134.  
  135. 'BIDLT 1A'      ; (9=8+1)   Board Identifier and revision (space seperated)
  136. 0x00
  137.  
  138. ;===========================================================================
  139. ; Logical Device Block (0)
  140. ;
  141. ; The logical device defines the resources used by a specific function of
  142. ; the PnP device.  The first logical device defined for InterWave is the
  143. ; InterWave synthesizer.  Note that all resource information following
  144. ; the Logical Device Block applies to the previous Logical Device, until
  145. ; a new Logical Device Block is declared.
  146. ;===========================================================================
  147.  
  148. 0x15            ; Small item, logical device ID, 5 bytes long
  149. 0x13            ; Vendor ID Byte 0
  150. 0x10            ; Vendor ID Byte 1
  151. 0x00            ; Vendor assigned function ID (byte 0)
  152. 0x10            ; Vendor assigned function ID (byte 1)
  153. 0x02            ; flags[1] = supports commands at index 0x31
  154.  
  155. ;---------------------------------------------------------------------------
  156. ; ANSI Identifier string (0)
  157. ;
  158. ; The Ansi Identifier string is an ASCII text string to display to the user
  159. ; for prompts and messages about the InterWave board.
  160. ;
  161. ; Note - It turns out that the first release of Windows 95 does not use
  162. ; the information stored in this field; instead, it uses the .INF file to
  163. ; determine the ASCII string for this logical device.  However, it does
  164. ; show up in the registry.
  165. ;---------------------------------------------------------------------------
  166.  
  167. 0x82            ; ANSI identifier string - Large item, ID string tag
  168. 0x0D            ; Length byte 0 (low byte)  - In total, 13 bytes long
  169. 0x00            ; Length byte 1 (high byte)
  170. 'Synth & Codec' ; Actual ANSI identifier
  171.  
  172. ;---------------------------------------------------------------------------
  173. ; InterWave Synthesizer IRQ structure (0)
  174. ;
  175. ; The IRQ structure defines which IRQs are supported for the
  176. ; specified logical device.  
  177. ;
  178. ; Note: The familiar concept of describing ISA bus IRQ 2 as
  179. ;       "IRQ 2" or "IRQ 2/9" is not valid for the PnP EEPROM.
  180. ;       Specifying ISA bus IRQ 2 in the EEPROM by setting IRQ 2
  181. ;       causes Windows 95 to prevent the interrupt from being
  182. ;       selected (copnflict with the interrupt controller).  The
  183. ;       correct way to specify ISA bus IRQ 2 in the PnP EEPROM
  184. ;       is by specifying IRQ 9.
  185. ;---------------------------------------------------------------------------
  186.  
  187. ;---------------------------------------------------------------------------
  188. ; InterWave Synthesizer DMA structure (0)
  189. ;
  190. ; The DMA structure defines which DMA channels are supported for
  191. ; the specified logical device.  In our case, we require two DMA
  192. ; channels for the InterWave device, hence the need for two DMA
  193. ; structures. The first DMA specifier, DMA 1, is for Record. It 
  194. ; is an eight-bit channel. The second, DMA 5, is for Play. It is
  195. ; a 16-bit channel. Note that SB/AdLib uses DMA 1 also but it picks 
  196. ; this up automatically if its DMA is not assigned using pnp 
  197. ; procedures as is the case here. The only negative result of this
  198. ; is that one cannot Record while SBOS is active.
  199. ;
  200. ;---------------------------------------------------------------------------
  201.  
  202.  
  203. ;---------------------------------------------------------------------------
  204. ; InterWave Synthesizer I/O port descriptor (0)
  205. ;
  206. ; The I/O port descriptor defines which I/O ports are supported
  207. ; for the specified logical device.
  208. ;
  209. ; Note that the "start dependent function", and "end dependent
  210. ; function", is not part of the I/O port descriptor.  It is used
  211. ; to tell the PnP configuration software that this logical device
  212. ; has a preferred configuration for this resource (in our case,
  213. ; the synthesizer's preferred I/O resource is 220h/320h/32Ch),
  214. ; and what that preferred configuration is.
  215. ;
  216. ; Although the InterWave can support a large number of possible
  217. ; I/O port configurations, for backwards compatibility with
  218. ; Gravis software (and to make Sound Blaster emulation work),
  219. ; the only addresses allowed are 220h/320h/32Ch and
  220. ; 240h/340h/34Ch.
  221. ;---------------------------------------------------------------------------
  222.  
  223.  
  224.  
  225. ;-----------------------------;
  226. ; Configuration 0 (preferred) ;
  227. ;-----------------------------;
  228.  
  229. 0x31            ; Small item, start dependent function, 1 byte long
  230. 0x00            ; 00 = Preferred resource configuration
  231.  
  232. 0x22            ; Small item, IRQ tag, 2 bytes long (Synth IRQ 1)
  233. 0x00            ; Pic 0: 00 = 00000000
  234. 0x08            ; Pic 1: 18 = 00001000 (IRQ 11)
  235.  
  236. 0x2A            ; Small item, DMA descriptor, 2 bytes long (Synth DMA 1)
  237. 0x80            ; E8 = 10000000 (DMA 7)
  238. 0x19            ; DMA transfer types: 8-bit and 16-bit transfers supported
  239.  
  240. 0x2A            ; Small item, DMA descriptor, 2 bytes long (Synth DMA 2)
  241. 0x40            ; F8 = 01000000 (DMA 6)
  242. 0x19            ; DMA transfer types: 8-bit and 16-bit transfers supported
  243.  
  244. 0x4B            ; Small item, fixed location I/O port descriptor, 3 bytes long
  245. 0x20            ; P2xR I/O address low   = 220h
  246. 0x02            ; P2xR I/O address high  = 220h
  247. 0x10            ; P2xR I/O address width = 16 contiguous I/O ports
  248.  
  249. 0x4B            ; Small item, fixed location I/O port descriptor, 3 bytes long
  250. 0x20            ; P3xR I/O address low   = 320h
  251. 0x03            ; P3xR I/O address high  = 320h
  252. 0x08            ; P3xR I/O address width = 8 contiguous I/O ports
  253.  
  254. 0x4B            ; Small item, fixed location I/O port descriptor, 3 bytes long
  255. 0x2C            ; PCODAR I/O address low   = 32Ch
  256. 0x03            ; PCODAR I/O address high  = 32Ch
  257. 0x04            ; PCODAR I/O address width = 4 contiguous I/O ports
  258.  
  259.  
  260. ;------------------------------;
  261. ; Configuration 1 (acceptible) ;
  262. ;------------------------------;
  263.  
  264. 0x31            ; Small item, start dependent function, 1 byte long
  265. 0x01            ; Acceptable configuration
  266.  
  267. 0x22            ; Small item, IRQ tag, 2 bytes long (Synth IRQ 1)
  268. 0x88            ; Pic 0: B0 = 10001000 (IRQ 7, 5, 3)
  269. 0x9A            ; Pic 1: 9C = 10011010 (IRQ 15, 12, 11, 9)
  270.  
  271. 0x2A            ; Small item, DMA descriptor, 2 bytes long (Synth DMA 1)
  272. 0xE8            ; E8 = 11101000 (DMA 7, 6, 5, 3)
  273. 0x19            ; DMA transfer types: 8-bit and 16-bit transfers supported
  274.  
  275. 0x2A            ; Small item, DMA descriptor, 2 bytes long (Synth DMA 2)
  276. 0xF8            ; F8 = 11111000 (DMA 7, 6, 5, 4, 3)
  277. 0x19            ; DMA transfer types: 8-bit and 16-bit transfers supported
  278.  
  279. 0x4B            ; Small item, fixed location I/O port descriptor, 3 bytes long
  280. 0x20            ; P2xR I/O address low   = 220h
  281. 0x02            ; P2xR I/O address high  = 220h
  282. 0x10            ; P2xR I/O address width = 16 contiguous I/O ports
  283.  
  284. 0x4B            ; Small item, fixed location I/O port descriptor, 3 bytes long
  285. 0x20            ; P3xR I/O address low   = 320h
  286. 0x03            ; P3xR I/O address high  = 320h
  287. 0x08            ; P3xR I/O address width = 8 contiguous I/O ports
  288.  
  289. 0x4B            ; Small item, fixed location I/O port descriptor, 3 bytes long
  290. 0x2C            ; PCODAR I/O address low   = 32Ch
  291. 0x03            ; PCODAR I/O address high  = 32Ch
  292. 0x04            ; PCODAR I/O address width = 4 contiguous I/O ports
  293.  
  294.  
  295. ;------------------------------;
  296. ; Configuration 2 (Sub-optimal);
  297. ;------------------------------;
  298. 0x31            ; Small item, start dependent function, 1 byte long
  299. 0x02            ; 02 = Sub-optimal resource configuration, not best
  300.  
  301. 0x22            ; Small item, IRQ tag, 2 bytes long (Synth IRQ 1)
  302. 0x88            ; Pic 0: 88 = 10001000 (IRQ 7, 3)
  303. 0x9A            ; Pic 1: 9A = 10011010 (IRQ 15, 12, 11, 9)
  304.  
  305. 0x2A            ; Small item, DMA descriptor, 2 bytes long (Synth DMA 1)
  306. 0xE8            ; E8 = 11101000 (DMA 7, 6, 5, 3)
  307. 0x19            ; DMA transfer types: 8-bit and 16-bit transfers supported
  308.  
  309. 0x2A            ; Small item, DMA descriptor, 2 bytes long (Synth DMA 2)
  310. 0xF8            ; F8 = 11111000 (DMA 7, 6, 5, 4, 3)
  311. 0x19            ; DMA transfer types: 8-bit and 16-bit transfers supported
  312.  
  313. 0x4B            ; Small item, fixed location I/O port descriptor, 3 bytes long
  314. 0x40            ; P2xR I/O address low   = 240h
  315. 0x02            ; P2xR I/O address high  = 240h
  316. 0x10            ; P2xR I/O address width = 16 contiguous I/O ports
  317.  
  318. 0x4B            ; Small item, fixed location I/O port descriptor, 3 bytes long
  319. 0x40            ; P3xR I/O address low   = 340h
  320. 0x03            ; P3xR I/O address high  = 340h
  321. 0x08            ; P3xR I/O address width = 8 contiguous I/O ports
  322.  
  323. 0x4B            ; Small item, fixed location I/O port descriptor, 3 bytes long
  324. 0x4C            ; PCODAR I/O address low   = 34Ch
  325. 0x03            ; PCODAR I/O address high  = 34Ch
  326. 0x04            ; PCODAR I/O address width = 4 contiguous I/O ports
  327.  
  328. 0x38            ; Small item, end dependent function, 0 bytes long
  329.  
  330.  
  331. ;
  332. ;===========================================================================
  333. ; Logical Device Block (1)
  334. ;
  335. ; This device is not in use.
  336. ;===========================================================================
  337.  
  338. 0x15            ; Small item, logical device ID, 5 bytes long
  339. 0x13            ; Vendor ID Byte 0
  340. 0x10            ; Vendor ID Byte 1
  341. 0x00            ; Vendor assigned function ID (byte 0)
  342. 0x11            ; Vendor assigned function ID (byte 1)
  343. 0x02            ; flags[1] = supports commands at index 0x31
  344.  
  345. ;---------------------------------------------------------------------------
  346. ; ANSI Identifier string (1)
  347. ;
  348. ; The Ansi Identifier string is an ASCII text string to display
  349. ; to the user for prompts and messages about the InterWave board.
  350. ;---------------------------------------------------------------------------
  351.  
  352. 0x82            ; ANSI identifier string - Large item, ID string tag
  353. 0x15            ; Length byte 0 (low byte)  - In total, 11 bytes long
  354. 0x00            ; Length byte 1 (high byte)
  355. 'Disabled ATAPI CD-ROM'  ; Actual ASCII identifier
  356.  
  357. ;---------------------------------------------------------------------------
  358. ; Disabled ATAPI CD-ROM Device gets no resources assigned.
  359. ;---------------------------------------------------------------------------
  360. ;
  361. ;;---------------------------------------------------------------------------
  362. ;; Compatible Device Block (1)
  363. ;;
  364. ;; The InterWave ATAPI CD-ROM interface is compatible with the
  365. ;; generic ATA/IDE/ESDI interface.  We can tell the PnP manager
  366. ;; that this is true by specifying a compatible device block.
  367. ;; The PnP device ID for a ATA/IDE/ESDI interface is PNP0600
  368. ;; (see the Microsoft document DEVIDS.TXT).
  369. ;;---------------------------------------------------------------------------
  370. ;
  371. ;0x1C            ; Small item, compatible device ID, 4 bytes long
  372. ;0x41            ; Device ID "PNPFFFF" in standard PnP vendor ID notation
  373. ;0xD0
  374. ;0xFF
  375. ;0xFF
  376. ;
  377. ;;---------------------------------------------------------------------------
  378. ;; InterWave CD-ROM IRQ structure
  379. ;;
  380. ;; The IRQ structure defines which IRQs are supported for the
  381. ;; specified logical device.  In our case, we require one IRQ
  382. ;; for the InterWave CD-ROM.
  383. ;;
  384. ;; Note: The familiar concept of describing ISA bus IRQ 2 as
  385. ;;       "IRQ 2" or "IRQ 2/9" is not valid for the PnP EEPROM.
  386. ;;       Specifying ISA bus IRQ 2 in the EEPROM by setting IRQ 2
  387. ;;       causes Windows 95 to prevent the interrupt from being
  388. ;;       selected (conflict with the interrupt controller).  The
  389. ;;       correct way to specify ISA bus IRQ 2 in the PnP EEPROM
  390. ;;       is by specifying IRQ 9.
  391. ;;---------------------------------------------------------------------------
  392. ;
  393. ;0x22            ; Small item, IRQ tag, 2 bytes long (CD-ROM IRQ)
  394. ;0x00            ; Pic 0: 00 = 00000000 (No IRQs on lower PIC)
  395. ;0x9C            ; Pic 1: 9C = 10011100 (IRQ 15, 12, 11, 10)
  396. ;
  397. ;;---------------------------------------------------------------------------
  398. ;; InterWave CD-ROM I/O port descriptor
  399. ;;
  400. ;; The I/O port descriptor defines which I/O ports are supported
  401. ;; for the specified logical device.
  402. ;;
  403. ;; Note that the "start dependent function", and "end dependent
  404. ;; function", is not part of the I/O port descriptor.  It is used
  405. ;; to tell the PnP configuration software that this logical device
  406. ;; has a preferred configuration for this resource (in our case,
  407. ;; the CD-ROM's preferred I/O resource is 170h/376h), and what
  408. ;; that preferred configuration is.
  409. ;;---------------------------------------------------------------------------
  410. ;;
  411. ;;-----------------------------;
  412. ;; Configuration 0 (preferred) ;
  413. ;;-----------------------------;
  414. ;
  415. ;0x31            ; Small item, start dependent function, 1 bytes long
  416. ;0x00            ; 00 = Preferred I/O resource configuration
  417. ;
  418. ;0x4B            ; Small item, fixed location I/O port descriptor, 3 bytes long
  419. ;0x50            ; PCDRAR I/O address low   = 150h
  420. ;0x01            ; PCDRAR I/O address high  = 170h
  421. ;0x08            ; PCDRAR I/O address width = 8 contiguous I/O ports
  422. ;0x38            ; End dependent function tag
  423. ;
  424. ;0x4B            ; Small item, fixed location I/O port descriptor, 3 bytes long
  425. ;0x76            ; PATAAR I/O address low   = 376h
  426. ;0x03            ; PATAAR I/O address high  = 376h
  427. ;0x02            ; PATAAR I/O address width = 2 contiguous I/O ports
  428. ;
  429. ;;-----------------------------;
  430. ;; Configuration 1 (alternate) ;
  431. ;;-----------------------------;
  432. ;
  433. ;0x31            ; Small item, start dependent function, 1 bytes long
  434. ;0x01            ; 01 = Acceptable I/O resource configuration, not best
  435. ;
  436. ;0x4B            ; Small item, fixed location I/O port descriptor, 3 bytes long
  437. ;0x68            ; PCDRAR I/O address low   = 168h
  438. ;0x01            ; PCDRAR I/O address high  = 168h
  439. ;0x08            ; PCDRAR I/O address width = 8 contiguous I/O ports
  440. ;
  441. ;0x4B            ; Small item, fixed location I/O port descriptor, 3 bytes long
  442. ;0x6E            ; PATAAR I/O address low   = 36Eh
  443. ;0x03            ; PATAAR I/O address high  = 36Eh
  444. ;0x02            ; PATAAR I/O address width = 2 contiguous I/O ports
  445. ;
  446. ;;-----------------------------;
  447. ;; Configuration 2 (alternate) ;
  448. ;;-----------------------------;
  449. ;
  450. ;0x31            ; Small item, start dependent function, 1 bytes long
  451. ;0x01            ; 01 = Acceptable I/O resource configuration, not best
  452. ;
  453. ;0x4B            ; Small item, fixed location I/O port descriptor, 3 bytes long
  454. ;0xE8            ; PCDRAR I/O address low   = 1E8h
  455. ;0x01            ; PCDRAR I/O address high  = 1E8h
  456. ;0x08            ; PCDRAR I/O address width = 8 contiguous I/O ports
  457. ;
  458. ;0x4B            ; Small item, fixed location I/O port descriptor, 3 bytes long
  459. ;0xEE            ; PATAAR I/O address low   = 3EEh
  460. ;0x03            ; PATAAR I/O address high  = 3EEh
  461. ;0x02            ; PATAAR I/O address width = 2 contiguous I/O ports
  462. ;
  463. ;0x38            ; End dependent function tag
  464.  
  465.  
  466. ;===========================================================================
  467. ; Logical Device Block (2)
  468. ;
  469. ; The third logical device on the InterWave part is the joystick
  470. ; (game port) interface.  The joystick only uses a single
  471. ; I/O port.
  472. ;===========================================================================
  473.  
  474. 0x15            ; Small item, logical device ID, 5 bytes long
  475. 0x13            ; Vendor ID Byte 0
  476. 0x10            ; Vendor ID Byte 1
  477. 0x00            ; Vendor assigned function ID (byte 0)
  478. 0x12            ; Vendor assigned function ID (byte 1)
  479. 0x02            ; flags[1] = supports commands at index 0x31
  480.  
  481. ;---------------------------------------------------------------------------
  482. ; Compatible Device Block (2)
  483. ;
  484. ; The InterWave joystick interface is compatible with the generic
  485. ; gameport.  We can tell the PnP manager that this is true by
  486. ; by specifying a compatible device block. The PnP device ID for
  487. ; the generic gameport is PNPB02F (see the Microsoft document
  488. ; DEVIDS.TXT).
  489. ;---------------------------------------------------------------------------
  490.  
  491. 0x1C            ; Small item, compatible device ID, 4 bytes long
  492. 0x41            ; Device ID "PNPB02F" in standard PnP vendor ID notation
  493. 0xD0
  494. 0xB0
  495. 0x2F
  496.  
  497. ;---------------------------------------------------------------------------
  498. ; ANSI Identifier string (2)
  499. ;
  500. ; The Ansi Identifier string is an ASCII text string to display
  501. ; to the user for prompts and messages about the InterWave board.
  502. ;---------------------------------------------------------------------------
  503.  
  504. 0x82            ; ANSI identifier string - Large item, ID string tag
  505. 0x09            ; Length byte 0 (low byte)  - In total, 9 bytes long
  506. 0x00            ; Length byte 1 (high byte)
  507. 'Game Port'     ; Actual ANSI identifier
  508.  
  509. ;---------------------------------------------------------------------------
  510. ; InterWave Joystick I/O descriptor block (2)
  511. ;
  512. ; We only support a single I/O address for the joystick, for
  513. ; games compatibility.
  514. ;---------------------------------------------------------------------------
  515.  
  516. 0x4B            ; Small item, fixed location I/O port descriptor, 3 bytes long
  517. 0x01            ; P2xR I/O address low   = 201h
  518. 0x02            ; P2xR I/O address high  = 201h
  519. 0x01            ; P2xR I/O address width = 1 I/O port
  520.  
  521. ;===========================================================================
  522. ; Logical Device Block (3)
  523. ;
  524. ; The fourth logical device on the InterWave part is the Adlib
  525. ; FM register set and Sound Blaster interrupt line.
  526. ;===========================================================================
  527.  
  528. 0x15            ; Small item, logical device ID, 5 bytes long
  529. 0x13            ; Vendor ID Byte 0
  530. 0x10            ; Vendor ID Byte 1
  531. 0x00            ; Vendor assigned function ID (byte 0)
  532. 0x13            ; Vendor assigned function ID (byte 1)
  533. 0x02            ; flags[1] = supports commands at index 0x31
  534.  
  535. ;-------------------------------------------------------------------------
  536. ; ANSI Identifier string (3)
  537. ;
  538. ; The Ansi Identifier string is an ASCII text string to display
  539. ; to the user for prompts and messages about the InterWave board.
  540. ;---------------------------------------------------------------------------
  541.  
  542. 0x82            ; ANSI identifier string - Large item, ID string tag
  543. 0x10            ; Length byte 0 (low byte)  - In total, 16 bytes long
  544. 0x00            ; Length byte 1 (high byte)
  545. 'SB Digital Audio'  ; Actual ANSI identifier
  546.  
  547. ;---------------------------------------------------------------------------
  548. ; InterWave Sound Blaster IRQ structure (3)
  549. ;
  550. ; The IRQ structure defines which IRQs are supported for the
  551. ; specified logical device.  In our case, we require one IRQ
  552. ; for the InterWave Sound Blaster device.
  553. ;
  554. ; Note: The familiar concept of describing ISA bus IRQ 2 as
  555. ;       "IRQ 2" or "IRQ 2/9" is not valid for the PnP EEPROM.
  556. ;       Specifying ISA bus IRQ 2 in the EEPROM by setting IRQ 2
  557. ;       causes Windows 95 to prevent the interrupt from being
  558. ;       selected (conflict with the interrupt controller).  The
  559. ;       correct way to specify ISA bus IRQ 2 in the PnP EEPROM
  560. ;       is by specifying IRQ 9.
  561. ;---------------------------------------------------------------------------
  562.  
  563. 0x31            ; Small item, start dependent function, 1 byte long
  564. 0x00            ; 00 = Preferred IRQ resource configuration
  565.  
  566. 0x22            ; Small item, IRQ tag, 2 bytes long (SB IRQ)
  567. 0x20            ; Pic 0: 20 = 00100000 (IRQ 5)
  568. 0x00            ; Pic 1: 00 = 00000000 (No IRQ on upper PIC)
  569.  
  570. 0x31            ; Small item, start dependent function, 1 byte long
  571. 0x02            ; 02 = Sub-optimal IRQ resource configuration, not best
  572.  
  573. 0x22            ; Small item, IRQ tag, 2 bytes long (SB IRQ)
  574. 0xA0            ; Pic 0: A0 = 10100000 (IRQ  7, 5)
  575. 0x00            ; Pic 1: 00 = 00000000 (no upper IRQs allowed for SB)
  576.  
  577. 0x38            ; Small item, end dependent function, 0 bytes long
  578.  
  579. ;---------------------------------------------------------------------------
  580. ; InterWave Adlib (Yamaha OPL-II FM) I/O descriptor block (3)
  581. ;
  582. ; We only support a single I/O address for the Adlib FM, for
  583. ; games compatibility.
  584. ;---------------------------------------------------------------------------
  585.  
  586. 0x4B            ; Small item, fixed location I/O port descriptor, 3 bytes long
  587. 0x88            ; FM I/O address low   = 388h
  588. 0x03            ; FM I/O address high  = 388h
  589. 0x02            ; FM I/O address width = 2 consecutive I/O ports
  590.  
  591. ;---------------------------------------------------------------------------
  592. ; InterWave SB DMA structure (3)
  593. ;
  594. ; The DMA structure defines which DMA channels are supported for
  595. ; the specified logical device.  In our case, we require one DMA
  596. ; channel (1) for Sound Blaster DMA. However, the SYNTH\CODEC device
  597. ; uses DMA 1 for Record. This is the same channel SBOS needs. We do
  598. ; not request a DMA channel here because SBOS picks up DMA channel 1
  599. ; automatically if its DMA is not assigned using pnp procedures as
  600. ; is the case here. The only negative result of this is that one 
  601. ; cannot Record while SBOS is active.
  602. ;
  603. ;---------------------------------------------------------------------------
  604.  
  605. 0x2A            ; Small item, DMA descriptor, 2 bytes long (SB DMA)
  606. 0x02            ; 02 = 00000010 (DMA 1 only)
  607. 0x19            ; DMA transfer types: 8-bit and 16-bit transfers supported
  608.  
  609. ;===========================================================================
  610. ; Logical Device Block (4)
  611. ;
  612. ; The fifth logical device on the InterWave part is the MPU-401
  613. ; device.
  614. ;===========================================================================
  615.  
  616. 0x15            ; Small item, logical device ID, 5 bytes long
  617. 0x13            ; Vendor ID Byte 0
  618. 0x10            ; Vendor ID Byte 1
  619. 0x00            ; Vendor assigned function ID (byte 0)
  620. 0x14            ; Vendor assigned function ID (byte 1)
  621. 0x02            ; flags[1] = supports commands at index 0x31
  622.  
  623. ;---------------------------------------------------------------------------
  624. ; ANSI Identifier string (4)
  625. ;
  626. ; The Ansi Identifier string is an ASCII text string to display
  627. ; to the user for prompts and messages about the InterWave board.
  628. ;---------------------------------------------------------------------------
  629.  
  630. 0x82            ; ANSI identifier string - Large item, ID string tag
  631. 0x08            ; Length byte 0 (low byte)  - In total, 8 bytes long
  632. 0x00            ; Length byte 1 (high byte)
  633. 'GM Music'      ; Actual ANSI identifier
  634.  
  635. ;---------------------------------------------------------------------------
  636. ; InterWave MPU-401 IRQ structure (4)
  637. ;
  638. ; The IRQ structure defines which IRQs are supported for the
  639. ; specified logical device.  In our case, we require one IRQ
  640. ; for the InterWave MPU-401 device.
  641. ;
  642. ; Note: The familiar concept of describing ISA bus IRQ 2 as
  643. ;       "IRQ 2" or "IRQ 2/9" is not valid for the PnP EEPROM.
  644. ;       Specifying ISA bus IRQ 2 in the EEPROM by setting IRQ 2
  645. ;       causes Windows 95 to prevent the interrupt from being
  646. ;       selected (conflict with the interrupt controller).  The
  647. ;       correct way to specify ISA bus IRQ 2 in the PnP EEPROM
  648. ;       is by specifying IRQ 9.
  649. ;---------------------------------------------------------------------------
  650. ;
  651. ;0x31            ; Small item, start dependent function, 1 byte long
  652. ;0x00            ; 00 = Preferred I/O resource configuration
  653. ;0x22            ; Small item, IRQ tag, 2 bytes long (MPU-401 IRQ)
  654. ;0x00            ; Pic 0: 00 = 00000000 (No IRQs on lower PIC)
  655. ;0x02            ; Pic 1: 02 = 00000010 (IRQ 9)
  656.  
  657. ;0x30            ; Small item, start dependent function, 0 bytes long
  658. ;0x22            ; Small item, IRQ tag, 2 bytes long (MPU-401 IRQ)
  659. ;0x00            ; Pic 0: 00 = 00000000 (No IRQs on lower PIC)
  660. ;0x04            ; Pic 1: 04 = 00000100 (IRQ 10)
  661.  
  662. ;0x30            ; Small item, start dependent function, 0 bytes long
  663. ;0x22            ; Small item, IRQ tag, 2 bytes long (MPU-401 IRQ)
  664. ;0x00            ; Pic 0: 00 = 00000000 (No IRQs on lower PIC)
  665. ;0x08            ; Pic 1: 08 = 00001000 (IRQ 11)
  666.  
  667. ;0x38            ; End dependent function tag
  668.  
  669. ;---------------------------------------------------------------------------
  670. ; InterWave MPU-401 (General MIDI) I/O descriptor block (4)
  671. ;
  672. ; Many games support a variety of addresses for the MPU-401 I/O
  673. ; base address.  For PnP, we are telling the PnP manager that
  674. ; we support: 330h, 332h, 334h, and 336h.
  675. ;---------------------------------------------------------------------------
  676.  
  677. 0x31            ; Small item, start dependent function, 1 byte long
  678. 0x00            ; 00 = Preferred I/O resource configuration
  679.  
  680. 0x4B            ; Small item, Fixed I/O port descriptor, 3 bytes long
  681. 0x30            ; Lowest I/O base address (low byte)  = 330h
  682. 0x03            ; Lowest I/O base address (high byte) = 330h
  683. 0x02            ; MPU-401 requires 2 consecutive I/O ports
  684.  
  685. 0x31            ; Small item, start dependent function, 1 byte long
  686. 0x01            ; 01 = Acceptible I/O resource configuration, not best
  687.  
  688. 0x47            ; Small item, I/O port descriptor, 7 bytes long
  689. 0x01            ; 16-bit I/O decode
  690. 0x30            ; Lowest I/O base address (low byte)  = 330h
  691. 0x03            ; Lowest I/O base address (high byte) = 330h
  692. 0x36            ; Highest I/O base address (low byte)  = 336h
  693. 0x03            ; Highest I/O base address (high byte) = 336h
  694. 0x02            ; I/O port must be aligned on a 2 byte boundary
  695. 0x02            ; MPU-401 requires 2 consecutive I/O ports
  696.  
  697. 0x38            ; End dependent function
  698.  
  699. ;;===========================================================================
  700. ;; Logical Device Block (5)
  701. ;; This device activates the external telephony support circuit.
  702. ;; In our case I only the the I/O Ports to be enabled (address is decoded)
  703. ;; No IRQ is needed
  704. ;;===========================================================================
  705. ;
  706. ;0x15            ; Small item, logical device ID, 5 bytes long
  707. ;0x13            ; Vendor ID Byte 0
  708. ;0x10            ; Vendor ID Byte 1
  709. ;0x00            ; Vendor assigned function ID (byte 0)
  710. ;0x15            ; Vendor assigned function ID (byte 1)
  711. ;0x02            ; flags[1] = supports commands at index 0x31
  712. ;
  713. ;;---------------------------------------------------------------------------
  714. ;; ANSI Identifier string (5)
  715. ;;---------------------------------------------------------------------------
  716. ;
  717. ;0x82            ; ANSI identifier string - Large item, ID string tag
  718. ;0x0E            ; Length byte 0 (low byte)  - In total, 14 bytes long
  719. ;0x00            ; Length byte 1 (high byte)
  720. ;'3D Spatializer'
  721. ;
  722. ;;---------------------------------------------------------------------------
  723. ;; These are the supported resources (5)
  724. ;;---------------------------------------------------------------------------
  725. ;
  726. ;0x31            ; Small item, start dependent function, 1 byte long
  727. ;0x00            ; 00 = Preferred I/O resource configuration
  728. ;
  729. ;0x4B            ; Small item, fixed location I/O port descriptor, 3 bytes long
  730. ;0x50            ; PTELAR I/O address Base (low byte)= 0x350
  731. ;0x03            ; PTELAR I/O address Base (high byte)= 0x350
  732. ;0x08            ; Sixth Logical Device allows 8 consecutive ports
  733. ;
  734. ;
  735. ;0x31            ; Small item, start dependent function, 1 byte long
  736. ;0x02            ; 02 = Sub-optimal I/O resource configuration, not best
  737. ;
  738. ;0x4B            ; Small item, fixed location I/O port descriptor, 3 bytes long
  739. ;0x60            ; PTELAR I/O address Base (low byte)= 0x360
  740. ;0x03            ; PTELAR I/O address Base (high byte)= 0x360
  741. ;0x08            ; Sixth Logical Device allows 8 consecutive ports
  742. ;
  743. ;0x38            ; End dependent flag
  744.  
  745. ;
  746. ;===========================================================================
  747. ; End tag
  748. ;
  749. ; The end tag defines the end of the EEPROM, and the EEPROM
  750. ; checksum.  Note that the checksum of zero means "unknown
  751. ; checksum", and that the PnP manager should not bother to verify
  752. ; that the EEPROM checksum is correct.
  753. ;===========================================================================
  754.  
  755. 0x79
  756. 0x00
  757.